﻿using Game.Common;
using Game.Level;
using Game.Map;

namespace Game.StateMachine
{
    public abstract class State
    {
        private readonly StateId _Id;

        protected State(StateId id)
        {
            _Id = id;
        }
        
        public StateId Id
        {
            get { return _Id; }
        }
        
        public virtual void Enter() {}
        public virtual void Exit() {}
        public virtual void Init() {}

        public virtual StateId CheckTransitions(object contoller) 
        {
            return new StateIdNone();
        }

        public abstract void DoTurn(
            IGameMapView view, 
            GameLevels levels,
            object controller, 
            GameTurn turn);
    }
}
